-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(core): Pass module
into loadModule
#15139
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @jrandolf thanks for contributing! This sounds reasonable to me. Let's see if CI agrees :) In the current state, this would be a breaking change which is fine, since we're working on v9 of the SDK anyway. If you'd like to see this released for v8 of the SDK, we need to make the new parameter optional, so that there's no API breakage.
I'm just a bit surprised that this surfaces only now, given that pnpm and NextJS are used quite frequently, I'd imagine.
9a2ab42
to
e30fc15
Compare
heads-up: just assigning myself to review and merge this on Monday. Restarted CI in the meantime. Thanks for making the parameter optional! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
The `loadModule` function currently utilizes `require` to load modules starting from the `@sentry/core` directory. This approach is incompatible with package managers like pnpm, which do not hoist dependencies. Consequently, when another module, such as @sentry/nextjs, invokes `loadModule`, it fails to locate its own dependencies because the search initiates within the @sentry/core tree.
This PR adds the external contributor to the CHANGELOG.md file, so that they are credited for their contribution. See #15139 --------- Co-authored-by: Lukas Stracke <[email protected]>
backport of #15139 --------- Co-authored-by: Randolf J <[email protected]> Co-authored-by: Abhijeet Prasad <[email protected]>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@sentry/react](https://github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://github.com/getsentry/sentry-javascript)) | dependencies | minor | [`8.51.0` -> `8.52.0`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.51.0/8.52.0) | --- ### Release Notes <details> <summary>getsentry/sentry-javascript (@​sentry/react)</summary> ### [`v8.52.0`](https://github.com/getsentry/sentry-javascript/releases/tag/8.52.0) [Compare Source](getsentry/sentry-javascript@8.51.0...8.52.0) ##### Important Changes - **feat(solidstart): Add `withSentry` wrapper for SolidStart config ([#​15135](getsentry/sentry-javascript#15135 To enable the SolidStart SDK, wrap your SolidStart Config with `withSentry`. The `sentrySolidStartVite` plugin is now automatically added by `withSentry` and you can pass the Sentry build-time options like this: ```js import { defineConfig } from '@​solidjs/start/config'; import { withSentry } from '@​sentry/solidstart'; export default defineConfig( withSentry( { /* Your SolidStart config options... */ }, { // Options for setting up source maps org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, authToken: process.env.SENTRY_AUTH_TOKEN, }, ), ); ``` With the `withSentry` wrapper, the Sentry server config should not be added to the `public` directory anymore. Add the Sentry server config in `src/instrument.server.ts`. Then, the server config will be placed inside the server build output as `instrument.server.mjs`. Now, there are two options to set up the SDK: 1. **(recommended)** Provide an `--import` CLI flag to the start command like this (path depends on your server setup): `node --import ./.output/server/instrument.server.mjs .output/server/index.mjs` 2. Add `autoInjectServerSentry: 'top-level-import'` and the Sentry config will be imported at the top of the server entry (comes with tracing limitations) ```js withSentry( { /* Your SolidStart config options... */ }, { // Optional: Install Sentry with a top-level import autoInjectServerSentry: 'top-level-import', }, ); ``` ##### Other Changes - feat(v8/core): Add client outcomes for breadcrumbs buffer ([#​15149](getsentry/sentry-javascript#15149)) - feat(v8/core): Improve error formatting in ZodErrors integration ([#​15155](getsentry/sentry-javascript#15155)) - fix(v8/bun): Ensure instrumentation of `Bun.serve` survives a server reload ([#​15157](getsentry/sentry-javascript#15157)) - fix(v8/core): Pass `module` into `loadModule` ([#​15139](getsentry/sentry-javascript#15139)) ([#​15166](getsentry/sentry-javascript#15166)) Work in this release was contributed by [@​jahands](https://github.com/jahands), [@​jrandolf](https://github.com/jrandolf), and [@​nathankleyn](https://github.com/nathankleyn). Thank you for your contributions! #### Bundle size 📦 | Path | Size | | ---------------------------------------------------------------- | ----------------- | | [@​sentry/browser](https://github.com/sentry/browser) | 23.32 KB | | [@​sentry/browser](https://github.com/sentry/browser) - with treeshaking flags | 23.2 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing) | 35.88 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay) | 73.23 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay) - with treeshaking flags | 66.7 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay with Canvas) | 77.54 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay, Feedback) | 89.47 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Feedback) | 39.53 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. sendFeedback) | 27.94 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. FeedbackAsync) | 32.73 KB | | [@​sentry/react](https://github.com/sentry/react) | 26 KB | | [@​sentry/react](https://github.com/sentry/react) (incl. Tracing) | 38.71 KB | | [@​sentry/vue](https://github.com/sentry/vue) | 27.6 KB | | [@​sentry/vue](https://github.com/sentry/vue) (incl. Tracing) | 37.74 KB | | [@​sentry/svelte](https://github.com/sentry/svelte) | 23.49 KB | | CDN Bundle | 24.52 KB | | CDN Bundle (incl. Tracing) | 37.59 KB | | CDN Bundle (incl. Tracing, Replay) | 72.87 KB | | CDN Bundle (incl. Tracing, Replay, Feedback) | 78.24 KB | | CDN Bundle - uncompressed | 72.01 KB | | CDN Bundle (incl. Tracing) - uncompressed | 111.51 KB | | CDN Bundle (incl. Tracing, Replay) - uncompressed | 225.76 KB | | CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed | 238.86 KB | | [@​sentry/nextjs](https://github.com/sentry/nextjs) (client) | 38.96 KB | | [@​sentry/sveltekit](https://github.com/sentry/sveltekit) (client) | 36.39 KB | | [@​sentry/node](https://github.com/sentry/node) | 162.87 KB | | [@​sentry/node](https://github.com/sentry/node) - without tracing | 99.18 KB | | [@​sentry/aws-serverless](https://github.com/sentry/aws-serverless) | 126.69 KB | </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzguMiIsInVwZGF0ZWRJblZlciI6IjM5LjEzOC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Reviewed-on: https://git.tristess.app/alexandresoro/ouca-web/pulls/63 Reviewed-by: Alexandre Soro <[email protected]> Co-authored-by: renovate <[email protected]> Co-committed-by: renovate <[email protected]>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@sentry/node](https://github.com/getsentry/sentry-javascript/tree/master/packages/node) ([source](https://github.com/getsentry/sentry-javascript)) | dependencies | minor | [`8.51.0` -> `8.52.0`](https://renovatebot.com/diffs/npm/@sentry%2fnode/8.51.0/8.52.0) | --- ### Release Notes <details> <summary>getsentry/sentry-javascript (@​sentry/node)</summary> ### [`v8.52.0`](https://github.com/getsentry/sentry-javascript/releases/tag/8.52.0) [Compare Source](getsentry/sentry-javascript@8.51.0...8.52.0) ##### Important Changes - **feat(solidstart): Add `withSentry` wrapper for SolidStart config ([#​15135](getsentry/sentry-javascript#15135 To enable the SolidStart SDK, wrap your SolidStart Config with `withSentry`. The `sentrySolidStartVite` plugin is now automatically added by `withSentry` and you can pass the Sentry build-time options like this: ```js import { defineConfig } from '@​solidjs/start/config'; import { withSentry } from '@​sentry/solidstart'; export default defineConfig( withSentry( { /* Your SolidStart config options... */ }, { // Options for setting up source maps org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, authToken: process.env.SENTRY_AUTH_TOKEN, }, ), ); ``` With the `withSentry` wrapper, the Sentry server config should not be added to the `public` directory anymore. Add the Sentry server config in `src/instrument.server.ts`. Then, the server config will be placed inside the server build output as `instrument.server.mjs`. Now, there are two options to set up the SDK: 1. **(recommended)** Provide an `--import` CLI flag to the start command like this (path depends on your server setup): `node --import ./.output/server/instrument.server.mjs .output/server/index.mjs` 2. Add `autoInjectServerSentry: 'top-level-import'` and the Sentry config will be imported at the top of the server entry (comes with tracing limitations) ```js withSentry( { /* Your SolidStart config options... */ }, { // Optional: Install Sentry with a top-level import autoInjectServerSentry: 'top-level-import', }, ); ``` ##### Other Changes - feat(v8/core): Add client outcomes for breadcrumbs buffer ([#​15149](getsentry/sentry-javascript#15149)) - feat(v8/core): Improve error formatting in ZodErrors integration ([#​15155](getsentry/sentry-javascript#15155)) - fix(v8/bun): Ensure instrumentation of `Bun.serve` survives a server reload ([#​15157](getsentry/sentry-javascript#15157)) - fix(v8/core): Pass `module` into `loadModule` ([#​15139](getsentry/sentry-javascript#15139)) ([#​15166](getsentry/sentry-javascript#15166)) Work in this release was contributed by [@​jahands](https://github.com/jahands), [@​jrandolf](https://github.com/jrandolf), and [@​nathankleyn](https://github.com/nathankleyn). Thank you for your contributions! #### Bundle size 📦 | Path | Size | | ---------------------------------------------------------------- | ----------------- | | [@​sentry/browser](https://github.com/sentry/browser) | 23.32 KB | | [@​sentry/browser](https://github.com/sentry/browser) - with treeshaking flags | 23.2 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing) | 35.88 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay) | 73.23 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay) - with treeshaking flags | 66.7 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay with Canvas) | 77.54 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Tracing, Replay, Feedback) | 89.47 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. Feedback) | 39.53 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. sendFeedback) | 27.94 KB | | [@​sentry/browser](https://github.com/sentry/browser) (incl. FeedbackAsync) | 32.73 KB | | [@​sentry/react](https://github.com/sentry/react) | 26 KB | | [@​sentry/react](https://github.com/sentry/react) (incl. Tracing) | 38.71 KB | | [@​sentry/vue](https://github.com/sentry/vue) | 27.6 KB | | [@​sentry/vue](https://github.com/sentry/vue) (incl. Tracing) | 37.74 KB | | [@​sentry/svelte](https://github.com/sentry/svelte) | 23.49 KB | | CDN Bundle | 24.52 KB | | CDN Bundle (incl. Tracing) | 37.59 KB | | CDN Bundle (incl. Tracing, Replay) | 72.87 KB | | CDN Bundle (incl. Tracing, Replay, Feedback) | 78.24 KB | | CDN Bundle - uncompressed | 72.01 KB | | CDN Bundle (incl. Tracing) - uncompressed | 111.51 KB | | CDN Bundle (incl. Tracing, Replay) - uncompressed | 225.76 KB | | CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed | 238.86 KB | | [@​sentry/nextjs](https://github.com/sentry/nextjs) (client) | 38.96 KB | | [@​sentry/sveltekit](https://github.com/sentry/sveltekit) (client) | 36.39 KB | | [@​sentry/node](https://github.com/sentry/node) | 162.87 KB | | [@​sentry/node](https://github.com/sentry/node) - without tracing | 99.18 KB | | [@​sentry/aws-serverless](https://github.com/sentry/aws-serverless) | 126.69 KB | </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzguMiIsInVwZGF0ZWRJblZlciI6IjM5LjEzOC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Reviewed-on: https://git.tristess.app/alexandresoro/ouca-backend/pulls/509 Reviewed-by: Alexandre Soro <[email protected]> Co-authored-by: renovate <[email protected]> Co-committed-by: renovate <[email protected]>
yarn lint
) & (yarn test
).Certainly! Here’s a more elegantly phrased version of your content:
The
loadModule
function currently utilizesrequire
to load modules starting from the@sentry/core
directory. This approach is incompatible with package managers like pnpm, which do not hoist dependencies. Consequently, when another module, such as @sentry/nextjs, invokesloadModule
, it fails to locate its own dependencies because the search initiates within the @sentry/core tree.Example Scenario
Current Behavior:
If @sentry/nextjs calls
loadModule('@sentry/webpack-plugin')
, the function attempts to locate @sentry/webpack-plugin within the dependencies of @sentry/core. This results in the module not being found if@sentry/webpack-plugin
is not a dependency of@sentry/core
.Proposed Change:
With the current pull request, invoking
loadModule('@sentry/webpack-plugin', module)
directs the search to the dependencies of @sentry/nextjs instead of @sentry/core. This ensures that loadModule correctly resolves modules based on the calling module’s dependency tree, accommodating environments where dependencies are not hoisted.